package com.heima.datastructure.queue;

/**
 * 队列的接口，接口的方法默认都是public abstract
 * @param <E>
 */
public interface Queue<E> {

    /**
     * 向队列尾部插入值
     * @param value 待插入值
     * @return 插入成功true，插入失败false
     */
    boolean offer(E value);

    /**
     * 从队列头获取值，并移除，poll的意思为轮询，获得
     * @return 如果列表非空，返回队头值，否则返回null
     */
    E poll();

    /**
     * 从队列头获取值，不移除，peek的意思是瞥一眼
     * @return 如果链表非空，返回队头值，否则返回null
     */
    E peek();

    /**
     * 判断队列是否为空
     * @return 为空返回true，否则false
     */
    boolean isEmpty();

    /**
     * 判断队列是否为满
     * @return 为满返回true，否则false
     */
    boolean isFull();
}
